package pe.edu.sistemas.sisdiam.controller;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.sql.Time;
import java.util.GregorianCalendar;
import java.util.Iterator;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.faces.model.SelectItem;

import org.primefaces.component.tabview.TabView;
import org.primefaces.event.SelectEvent;
import org.primefaces.event.TabChangeEvent;
import org.primefaces.model.DefaultScheduleEvent;
import org.primefaces.model.DefaultScheduleModel;
import org.primefaces.model.ScheduleEvent;
import org.primefaces.model.ScheduleModel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Controller;

import pe.edu.sistemas.sisdiam.entities.Aula;
import pe.edu.sistemas.sisdiam.entities.Periodo;
import pe.edu.sistemas.sisdiam.entities.Peticion;
import pe.edu.sistemas.sisdiam.entities.RegistroHorario;
import pe.edu.sistemas.sisdiam.entities.User;
import pe.edu.sistemas.sisdiam.repositories.PeriodoRepository;
import pe.edu.sistemas.sisdiam.services.AsignacionAulasService;
import pe.edu.sistemas.sisdiam.services.PeticionService;
import pe.edu.sistemas.sisdiam.services.ScheduleMagnaService;
import pe.edu.sistemas.sisdiam.services.UserScheduleService;
import pe.edu.sistemas.sisdiam.util.Fecha;

@Controller
@Scope("session")
public class CommonMagnaScheduleController {
	@Autowired
	UserScheduleService userService;
	@Autowired
	PeticionService peticionService;
	@Autowired
	ScheduleMagnaService asignarAulas;
	@Autowired
	PeriodoRepository periodoRepository;
	@Autowired
	AsignacionAulasService asignarListaMagna;
	//AsignacionAulasService asignarLaboratorios;
	private int idPestañaActiva;
	private boolean existeCruce=false;
	private Peticion peticionDoc=new Peticion();
	private List<Peticion> listaPeticiones=new ArrayList<Peticion>();
	private List<Peticion> eventosAprobadosMagna=new ArrayList<Peticion>();
	private Date inicioCalendar;
	private Peticion peticionSelected;
	
	private List<RegistroHorario> listaLunes=new ArrayList<RegistroHorario>();
	private List<RegistroHorario> listaMartes=new ArrayList<RegistroHorario>();
	private List<RegistroHorario> listaMiercoles=new ArrayList<RegistroHorario>();
	private List<RegistroHorario> listaJueves=new ArrayList<RegistroHorario>();
	private List<RegistroHorario> listaViernes=new ArrayList<RegistroHorario>();
	private List<RegistroHorario> listaSabado=new ArrayList<RegistroHorario>();
	private List<RegistroHorario> listaDomingo=new ArrayList<RegistroHorario>();
	private Aula Magna= new Aula();
	private List<RegistroHorario> horarioCruce=new ArrayList<RegistroHorario>();
	
	private ScheduleModel eventModelMagna;
	private ScheduleEvent eventSelected = new DefaultScheduleEvent();
	private DefaultScheduleEvent eventNuevo;
	private Periodo periodoActual = new Periodo();
	private Date fechaInicioP;
	private Date fechaFinP;
	private Date fechaAux;
	private User usuario;
	private List<Peticion> misPeticiones=new ArrayList<Peticion>();
	private RegistroHorario detalleClaseSelected;
	private Peticion detalleEventoSelected;	
	private boolean detalleEvento;
	private boolean detalleClase;
	
	private boolean existeCrucePet=false;
	private boolean existeCruceClases=false;
	private boolean existeCruceEventos=false;
	private List<RegistroHorario> listaCruceHorarios=new ArrayList<RegistroHorario>();
	private List<Peticion> posibleCrucePet=new ArrayList<Peticion>();
	private List<Peticion> posibleCrucePetAprob=new ArrayList<Peticion>();
	private List<String> error = new ArrayList<String>();
	private List<Peticion> CrucePet=new ArrayList<Peticion>();
	
	@PostConstruct
	public void init(){
		
		obtenerMagna();
		eventModelMagna = new DefaultScheduleModel();
		llenarMagna();
		llenarScheduleEventos();
	}
	
	


	public void limpiar(){
    	listaPeticiones.clear();
    	eventModelMagna.clear();
    	misPeticiones.clear();
    	
    }
     
    public void onEventSelect(SelectEvent selectEvent) {
    	System.out.println("ENTRASTE AL FUCKING SELECCION");
    	eventSelected = (ScheduleEvent) selectEvent.getObject();
    			if(eventSelected.getData() instanceof RegistroHorario){
    				detalleClaseSelected=(RegistroHorario)eventSelected.getData();
    				setDetalleClase(true);
    				setDetalleEvento(false);
    				System.out.println("HICISTE CLICK EN UNA CLASE");
    			}else{
    				detalleEventoSelected=(Peticion)eventSelected.getData();
    				setDetalleClase(false);
    				setDetalleEvento(true);
    				System.out.println("HICISTE CLICK EN UNA EVENTO");
    			}
    	
    }
    public void onTabChange(TabChangeEvent event) 
    {   
        TabView tabView = (TabView) event.getComponent();
        idPestañaActiva = tabView.getChildren().indexOf(event.getTab());
        System.out.println(idPestañaActiva + 1);
    }
	

public Date horarioAFecha(String s){
	Date date=null;
	SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
 
	try {
 
		date = formatter.parse(s);
 
	} catch (ParseException e) {
		e.printStackTrace();
	}
	return date;
}
public Date stringAFecha(String s){
	Date date=null;
	SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
 
	try {
 
		date = formatter.parse(s);
 
	} catch (ParseException e) {
		e.printStackTrace();
	}
	return date;
}
public void llenarLunes(Date fechaAux){
	int dia,mes,año;
	String Fecha,StringAux1,StringAux2;
	dia=fechaAux.getDate();
	mes=fechaAux.getMonth();
	mes++;
	año=fechaAux.getYear();
	año=año+1900;
	if(mes<=9){
		Fecha=""+dia+"-"+"0"+mes+"-"+año+"";
	}else{
		Fecha=""+dia+"-"+mes+"-"+año+"";
	}
	if(dia<=9){
		Fecha="0"+Fecha;
	}
	List<RegistroHorario> SLaux=listaLunes;
	System.out.println("NUMERO DE CLASES EN LOS LUNES DE MAGNA : "+SLaux.size());
	Iterator<RegistroHorario> iterador=SLaux.iterator();
	while(iterador.hasNext()){
		RegistroHorario rh=(RegistroHorario)iterador.next();
		StringAux1=Fecha;
		StringAux2=Fecha;
		StringAux1=StringAux1+" "+rh.gethInicio().getHours()+":";
		if(rh.gethInicio().getMinutes()<=9){
			StringAux1=StringAux1+"0"+rh.gethInicio().getMinutes()+":"+"00";
		}else{
			StringAux1=StringAux1+rh.gethInicio().getMinutes()+":"+"00";
		}
		StringAux2=StringAux2+" "+rh.gethFin().getHours()+":";
		if(rh.gethFin().getMinutes()<=9){
			StringAux2=StringAux2+"0"+rh.gethFin().getMinutes()+":"+"00";
		}else{
			StringAux2=StringAux2+rh.gethFin().getMinutes()+":"+"00";
		}
		switch(rh.getIdAula()){
		case 21:
			eventNuevo=new DefaultScheduleEvent(rh.getCurso(),horarioAFecha(StringAux1),horarioAFecha(StringAux2),rh);
			eventNuevo.setStyleClass("clase");
			eventModelMagna.addEvent(eventNuevo);break;
		case 0:break;
		}
	}
	
}
public void llenarMartes(Date fechaAux){
	int dia,mes,año;
	String Fecha,StringAux1,StringAux2;
	dia=fechaAux.getDate();
	mes=fechaAux.getMonth();
	mes++;
	año=fechaAux.getYear();
	año=año+1900;
	if(mes<=9){
		Fecha=""+dia+"-"+"0"+mes+"-"+año+"";
	}else{
		Fecha=""+dia+"-"+mes+"-"+año+"";
	}
	if(dia<=9){
		Fecha="0"+Fecha;
	}
	List<RegistroHorario> SLaux=listaMartes;
	if(SLaux.isEmpty()){
	}
	Iterator<RegistroHorario> iterador=SLaux.iterator();
	while(iterador.hasNext()){
		RegistroHorario rh=(RegistroHorario)iterador.next();
		StringAux1=Fecha;
		StringAux2=Fecha;
		StringAux1=StringAux1+" "+rh.gethInicio().getHours()+":";
		if(rh.gethInicio().getMinutes()<=9){
			StringAux1=StringAux1+"0"+rh.gethInicio().getMinutes()+":"+"00";
		}else{
			StringAux1=StringAux1+rh.gethInicio().getMinutes()+":"+"00";
		}
		StringAux2=StringAux2+" "+rh.gethFin().getHours()+":";
		if(rh.gethFin().getMinutes()<=9){
			StringAux2=StringAux2+"0"+rh.gethFin().getMinutes()+":"+"00";
		}else{
			StringAux2=StringAux2+rh.gethFin().getMinutes()+":"+"00";
		}
		switch(rh.getIdAula()){
		case 21:
			eventNuevo=new DefaultScheduleEvent(rh.getCurso(),horarioAFecha(StringAux1),horarioAFecha(StringAux2),rh);
			eventNuevo.setStyleClass("clase");
			eventModelMagna.addEvent(eventNuevo);break;
		case 0:break;
		}
	}	
}
public void llenarMiercoles(Date fechaAux){
	int dia,mes,año;
	String Fecha,StringAux1,StringAux2;
	dia=fechaAux.getDate();
	mes=fechaAux.getMonth();
	mes++;
	año=fechaAux.getYear();
	año=año+1900;
	if(mes<=9){
		Fecha=""+dia+"-"+"0"+mes+"-"+año+"";
	}else{
		Fecha=""+dia+"-"+mes+"-"+año+"";
	}
	if(dia<=9){
		Fecha="0"+Fecha;
	}
	List<RegistroHorario> SLaux=listaMiercoles;
	if(SLaux.isEmpty()){
	}
	Iterator<RegistroHorario> iterador=SLaux.iterator();
	while(iterador.hasNext()){
		RegistroHorario rh=(RegistroHorario)iterador.next();
		StringAux1=Fecha;
		StringAux2=Fecha;
		StringAux1=StringAux1+" "+rh.gethInicio().getHours()+":";
		if(rh.gethInicio().getMinutes()<=9){
			StringAux1=StringAux1+"0"+rh.gethInicio().getMinutes()+":"+"00";
		}else{
			StringAux1=StringAux1+rh.gethInicio().getMinutes()+":"+"00";
		}
		StringAux2=StringAux2+" "+rh.gethFin().getHours()+":";
		if(rh.gethFin().getMinutes()<=9){
			StringAux2=StringAux2+"0"+rh.gethFin().getMinutes()+":"+"00";
		}else{
			StringAux2=StringAux2+rh.gethFin().getMinutes()+":"+"00";
		}
		switch(rh.getIdAula()){
		case 21:
			eventNuevo=new DefaultScheduleEvent(rh.getCurso(),horarioAFecha(StringAux1),horarioAFecha(StringAux2),rh);
			eventNuevo.setStyleClass("clase");
			eventModelMagna.addEvent(eventNuevo);break;
		case 0:break;
		}
	}
}
public void llenarJueves(Date fechaAux){
	int dia,mes,año;
	String Fecha,StringAux1,StringAux2;
	dia=fechaAux.getDate();
	mes=fechaAux.getMonth();
	mes++;
	año=fechaAux.getYear();
	año=año+1900;
	if(mes<=9){
		Fecha=""+dia+"-"+"0"+mes+"-"+año+"";
	}else{
		Fecha=""+dia+"-"+mes+"-"+año+"";
	}
	if(dia<=9){
		Fecha="0"+Fecha;
	}
	List<RegistroHorario> SLaux=listaJueves;
	if(SLaux.isEmpty()){
	}
	Iterator<RegistroHorario> iterador=SLaux.iterator();
	while(iterador.hasNext()){
		RegistroHorario rh=(RegistroHorario)iterador.next();
		StringAux1=Fecha;
		StringAux2=Fecha;
		StringAux1=StringAux1+" "+rh.gethInicio().getHours()+":";
		if(rh.gethInicio().getMinutes()<=9){
			StringAux1=StringAux1+"0"+rh.gethInicio().getMinutes()+":"+"00";
		}else{
			StringAux1=StringAux1+rh.gethInicio().getMinutes()+":"+"00";
		}
		StringAux2=StringAux2+" "+rh.gethFin().getHours()+":";
		if(rh.gethFin().getMinutes()<=9){
			StringAux2=StringAux2+"0"+rh.gethFin().getMinutes()+":"+"00";
		}else{
			StringAux2=StringAux2+rh.gethFin().getMinutes()+":"+"00";
		}
		switch(rh.getIdAula()){
		case 21:
			eventNuevo=new DefaultScheduleEvent(rh.getCurso(),horarioAFecha(StringAux1),horarioAFecha(StringAux2),rh);
			eventNuevo.setStyleClass("clase");
			eventModelMagna.addEvent(eventNuevo);break;
		case 0:break;
		}
	}
}
public void llenarViernes(Date fechaAux){
	int dia,mes,año;
	String Fecha,StringAux1,StringAux2;
	dia=fechaAux.getDate();
	mes=fechaAux.getMonth();
	mes++;
	año=fechaAux.getYear();
	año=año+1900;
	if(mes<=9){
		Fecha=""+dia+"-"+"0"+mes+"-"+año+"";
	}else{
		Fecha=""+dia+"-"+mes+"-"+año+"";
	}
	if(dia<=9){
		Fecha="0"+Fecha;
	}
	List<RegistroHorario> SLaux=listaViernes;
	if(SLaux.isEmpty()){
	}
	Iterator<RegistroHorario> iterador=SLaux.iterator();
	while(iterador.hasNext()){
		RegistroHorario rh=(RegistroHorario)iterador.next();
		StringAux1=Fecha;
		StringAux2=Fecha;
		StringAux1=StringAux1+" "+rh.gethInicio().getHours()+":";
		if(rh.gethInicio().getMinutes()<=9){
			StringAux1=StringAux1+"0"+rh.gethInicio().getMinutes()+":"+"00";
		}else{
			StringAux1=StringAux1+rh.gethInicio().getMinutes()+":"+"00";
		}
		StringAux2=StringAux2+" "+rh.gethFin().getHours()+":";
		if(rh.gethFin().getMinutes()<=9){
			StringAux2=StringAux2+"0"+rh.gethFin().getMinutes()+":"+"00";
		}else{
			StringAux2=StringAux2+rh.gethFin().getMinutes()+":"+"00";
		}
		switch(rh.getIdAula()){
		case 21:
			eventNuevo=new DefaultScheduleEvent(rh.getCurso(),horarioAFecha(StringAux1),horarioAFecha(StringAux2),rh);
			eventNuevo.setStyleClass("clase");
			eventModelMagna.addEvent(eventNuevo);break;
		case 0:break;
		}
	}
}
public void llenarSabado(Date fechaAux){
	int dia,mes,año;
	String Fecha,StringAux1,StringAux2;
	dia=fechaAux.getDate();
	mes=fechaAux.getMonth();
	mes++;
	año=fechaAux.getYear();
	año=año+1900;
	if(mes<=9){
		Fecha=""+dia+"-"+"0"+mes+"-"+año+"";
	}else{
		Fecha=""+dia+"-"+mes+"-"+año+"";
	}
	if(dia<=9){
		Fecha="0"+Fecha;
	}
	List<RegistroHorario> SLaux=listaSabado;
	if(SLaux.isEmpty()){
	}
	Iterator<RegistroHorario> iterador=SLaux.iterator();
	while(iterador.hasNext()){
		RegistroHorario rh=(RegistroHorario)iterador.next();
		StringAux1=Fecha;
		StringAux2=Fecha;
		StringAux1=StringAux1+" "+rh.gethInicio().getHours()+":";
		if(rh.gethInicio().getMinutes()<=9){
			StringAux1=StringAux1+"0"+rh.gethInicio().getMinutes()+":"+"00";
		}else{
			StringAux1=StringAux1+rh.gethInicio().getMinutes()+":"+"00";
		}
		StringAux2=StringAux2+" "+rh.gethFin().getHours()+":";
		if(rh.gethFin().getMinutes()<=9){
			StringAux2=StringAux2+"0"+rh.gethFin().getMinutes()+":"+"00";
		}else{
			StringAux2=StringAux2+rh.gethFin().getMinutes()+":"+"00";
		}
		switch(rh.getIdAula()){
		case 21:
			eventNuevo=new DefaultScheduleEvent(rh.getCurso(),horarioAFecha(StringAux1),horarioAFecha(StringAux2),rh);
			eventNuevo.setStyleClass("clase");
			eventModelMagna.addEvent(eventNuevo);break;
		case 0:break;
		}
	}
}
public void llenarDomingo(Date fechaAux){
	int dia,mes,año;
	String Fecha,StringAux1,StringAux2;
	dia=fechaAux.getDate();
	mes=fechaAux.getMonth();
	mes++;
	año=fechaAux.getYear();
	año=año+1900;
	if(mes<=9){
		Fecha=""+dia+"-"+"0"+mes+"-"+año+"";
	}else{
		Fecha=""+dia+"-"+mes+"-"+año+"";
	}
	if(dia<=9){
		Fecha="0"+Fecha;
	}
	List<RegistroHorario> SLaux=listaDomingo;
	if(SLaux.isEmpty()){
	}
	Iterator<RegistroHorario> iterador=SLaux.iterator();
	while(iterador.hasNext()){
		RegistroHorario rh=(RegistroHorario)iterador.next();
		StringAux1=Fecha;
		StringAux2=Fecha;
		StringAux1=StringAux1+" "+rh.gethInicio().getHours()+":";
		if(rh.gethInicio().getMinutes()<=9){
			StringAux1=StringAux1+"0"+rh.gethInicio().getMinutes()+":"+"00";
		}else{
			StringAux1=StringAux1+rh.gethInicio().getMinutes()+":"+"00";
		}
		StringAux2=StringAux2+" "+rh.gethFin().getHours()+":";
		if(rh.gethFin().getMinutes()<=9){
			StringAux2=StringAux2+"0"+rh.gethFin().getMinutes()+":"+"00";
		}else{
			StringAux2=StringAux2+rh.gethFin().getMinutes()+":"+"00";
		}
		switch(rh.getIdAula()){
		case 21:
			eventNuevo=new DefaultScheduleEvent(rh.getCurso(),horarioAFecha(StringAux1),horarioAFecha(StringAux2),rh);
			eventNuevo.setStyleClass("clase");
			eventModelMagna.addEvent(eventNuevo);break;
		case 0:break;
		}
	}
}
public void obtenerListaDeDias(){
	listaLunes=asignarAulas.obtenerLunes();
	listaMartes=asignarAulas.obtenerMartes();
	listaMiercoles=asignarAulas.obtenerMiercoles();
	listaJueves=asignarAulas.obtenerJueves();
	listaViernes=asignarAulas.obtenerViernes();
	listaSabado=asignarAulas.obtenerSabado();
	listaDomingo=asignarAulas.obtenerDomingo();
}

public void llenarMagna(){
	periodoActual=periodoRepository.obtenerUltimoPeriodo();
	Date today;
	inicioCalendar = java.sql.Date.valueOf(periodoActual.getFechaInicio());
	today = Fecha.today();
	if(today.before(inicioCalendar)){
		inicioCalendar = today;
	}
	fechaInicioP=stringAFecha(periodoActual.getFechaInicio());
	fechaFinP=stringAFecha(periodoActual.getFechaFin());
	int contador=0;
	GregorianCalendar gcal = new GregorianCalendar();
	gcal.setTime(fechaInicioP);
	obtenerListaDeDias();
	while (gcal.getTime().compareTo(fechaFinP)<=0) {
		fechaAux=gcal.getTime();
		switch(fechaAux.getDay()){
			case 1:llenarLunes(fechaAux);break;
			case 2:llenarMartes(fechaAux);break;
			case 3:llenarMiercoles(fechaAux);break;
			case 4:llenarJueves(fechaAux);break;
			case 5:llenarViernes(fechaAux);break;
			case 6:llenarSabado(fechaAux);break;
			case 0:llenarDomingo(fechaAux);break;
		}
		contador++;
	    gcal.add(Calendar.DAY_OF_YEAR, 1);
	}
	
}
public void llenarScheduleEventos(){
	Date d1,d2;
	int i;
	eventosAprobadosMagna=peticionService.obtenerMagnaAprobadas();
	int repitencias;
	Iterator<Peticion> iterador=eventosAprobadosMagna.iterator();
	GregorianCalendar gcal1 = new GregorianCalendar();
	GregorianCalendar gcal2 = new GregorianCalendar();
	while(iterador.hasNext()){
		Peticion paux=(Peticion)iterador.next();
		int dia,mes,año,horaI,minutoI,segundoI,horaF,segundoF,minutoF;
		String Fecha,StringAux1,StringAux2;
		dia=paux.getDia().getDate();
		//dia=fechaAux.getDate();
		mes=paux.getDia().getMonth();
		//mes=fechaAux.getMonth();
		mes++;
		año=paux.getDia().getYear();
		//año=fechaAux.getYear();
		año=año+1900;
		horaI=paux.gethInicio().getHours();
		minutoI=paux.gethInicio().getMinutes();
		segundoI=paux.gethInicio().getSeconds();
		horaF=paux.gethFin().getHours();
		minutoF=paux.gethFin().getMinutes();
		segundoF=paux.gethFin().getSeconds();
		if(mes<=9){
			Fecha=""+dia+"-"+"0"+mes+"-"+año+"";
		}else{
			Fecha=""+dia+"-"+mes+"-"+año+"";
		}
		if(dia<=9){
			Fecha="0"+Fecha;
		}
		repitencias=paux.getNumRep();
		StringAux1=Fecha;
		StringAux2=Fecha;
		if(horaI<=9){
			StringAux1=StringAux1+" 0"+horaI;
		}else{
			StringAux1=StringAux1+" "+horaI;
		}
		if(minutoI<=9){
			StringAux1=StringAux1+":0"+minutoI;
		}else{
			StringAux1=StringAux1+":"+minutoI;
		}
		if(segundoI<=9){
			StringAux1=StringAux1+":0"+segundoI;
		}else{
			StringAux1=StringAux1+":"+segundoI;
		}
		if(horaF<=9){
			StringAux2=StringAux2+" 0"+horaF;
		}else{
			StringAux2=StringAux2+" "+horaF;
		}
		if(minutoF<=9){
			StringAux2=StringAux2+":0"+minutoF;
		}else{
			StringAux2=StringAux2+":"+minutoF;
		}
		if(segundoF<=9){
			StringAux2=StringAux2+":0"+segundoF;
		}else{
			StringAux2=StringAux2+":"+segundoF;
		}
		gcal1.setTime(horarioAFecha(StringAux1));
		gcal2.setTime(horarioAFecha(StringAux2));
		for(i=repitencias;i>0;i--){
			Fecha="";
			switch(paux.getIdAulaPet()){
			case 21:
				eventNuevo=new DefaultScheduleEvent(paux.getNombreEvento(),horarioAFecha(StringAux1),horarioAFecha(StringAux2),paux);
				eventNuevo.setStyleClass("evento");
				eventModelMagna.addEvent(eventNuevo);break;
			case 0:break;
			}
			gcal1.add(Calendar.DAY_OF_YEAR, 7);
			gcal2.add(Calendar.DAY_OF_MONTH, 7);
			d1=gcal1.getTime();
			d2=gcal2.getTime();
			dia=d1.getDate();
			//dia=fechaAux.getDate();
			mes=d1.getMonth();
			//mes=fechaAux.getMonth();
			mes++;
			año=d1.getYear();
			//año=fechaAux.getYear();
			año=año+1900;
			horaI=d1.getHours();
			minutoI=d1.getMinutes();
			segundoI=d1.getSeconds();
			horaF=d2.getHours();
			minutoF=d2.getMinutes();
			segundoF=d2.getSeconds();
			if(mes<=9){
				Fecha=""+dia+"-"+"0"+mes+"-"+año+"";
			}else{
				Fecha=""+dia+"-"+mes+"-"+año+"";
			}
			if(dia<=9){
				Fecha="0"+Fecha;
			}
			StringAux1=Fecha;
			StringAux2=Fecha;
			if(horaI<=9){
				StringAux1=StringAux1+" 0"+horaI;
			}else{
				StringAux1=StringAux1+" "+horaI;
			}
			if(minutoI<=9){
				StringAux1=StringAux1+":0"+minutoI;
			}else{
				StringAux1=StringAux1+":"+minutoI;
			}
			if(segundoI<=9){
				StringAux1=StringAux1+":0"+segundoI;
			}else{
				StringAux1=StringAux1+":"+segundoI;
			}
			if(horaF<=9){
				StringAux2=StringAux2+" 0"+horaF;
			}else{
				StringAux2=StringAux2+" "+horaF;
			}
			if(minutoF<=9){
				StringAux2=StringAux2+":0"+minutoF;
			}else{
				StringAux2=StringAux2+":"+minutoF;
			}
			if(segundoF<=9){
				StringAux2=StringAux2+":0"+segundoF;
			}else{
				StringAux2=StringAux2+":"+segundoF;
			}
		}
	}
	
}


public List<RegistroHorario> getListaCruceHorarios() {
	return listaCruceHorarios;
}




public void setListaCruceHorarios(List<RegistroHorario> listaCruceHorarios) {
	this.listaCruceHorarios = listaCruceHorarios;
}




public List<Peticion> getPosibleCrucePetAprob() {
	return posibleCrucePetAprob;
}




public void setPosibleCrucePetAprob(List<Peticion> posibleCrucePetAprob) {
	this.posibleCrucePetAprob = posibleCrucePetAprob;
}




public List<String> getError() {
	return error;
}




public void setError(List<String> error) {
	this.error = error;
}




public List<Peticion> getCrucePet() {
	return CrucePet;
}




public void setCrucePet(List<Peticion> crucePet) {
	CrucePet = crucePet;
}




public void obtenerMagna()
{
	this.Magna = asignarListaMagna.obtenerListaMagna();
}




public int getIdPestañaActiva() {
	return idPestañaActiva;
}




public void setIdPestañaActiva(int idPestañaActiva) {
	this.idPestañaActiva = idPestañaActiva;
}




public boolean isExisteCruce() {
	return existeCruce;
}




public void setExisteCruce(boolean existeCruce) {
	this.existeCruce = existeCruce;
}




public Peticion getPeticionDoc() {
	return peticionDoc;
}




public void setPeticionDoc(Peticion peticionDoc) {
	this.peticionDoc = peticionDoc;
}




public List<Peticion> getListaPeticiones() {
	return listaPeticiones;
}




public void setListaPeticiones(List<Peticion> listaPeticiones) {
	this.listaPeticiones = listaPeticiones;
}




public List<Peticion> getEventosAprobadosMagna() {
	return eventosAprobadosMagna;
}




public void setEventosAprobadosMagna(List<Peticion> eventosAprobadosMagna) {
	this.eventosAprobadosMagna = eventosAprobadosMagna;
}




public Date getInicioCalendar() {
	return inicioCalendar;
}




public void setInicioCalendar(Date inicioCalendar) {
	this.inicioCalendar = inicioCalendar;
}




public Peticion getPeticionSelected() {
	return peticionSelected;
}




public void setPeticionSelected(Peticion peticionSelected) {
	this.peticionSelected = peticionSelected;
}




public List<RegistroHorario> getListaLunes() {
	return listaLunes;
}




public void setListaLunes(List<RegistroHorario> listaLunes) {
	this.listaLunes = listaLunes;
}




public List<RegistroHorario> getListaMartes() {
	return listaMartes;
}




public void setListaMartes(List<RegistroHorario> listaMartes) {
	this.listaMartes = listaMartes;
}




public List<RegistroHorario> getListaMiercoles() {
	return listaMiercoles;
}




public void setListaMiercoles(List<RegistroHorario> listaMiercoles) {
	this.listaMiercoles = listaMiercoles;
}




public List<RegistroHorario> getListaJueves() {
	return listaJueves;
}




public void setListaJueves(List<RegistroHorario> listaJueves) {
	this.listaJueves = listaJueves;
}




public List<RegistroHorario> getListaViernes() {
	return listaViernes;
}




public void setListaViernes(List<RegistroHorario> listaViernes) {
	this.listaViernes = listaViernes;
}




public List<RegistroHorario> getListaSabado() {
	return listaSabado;
}




public void setListaSabado(List<RegistroHorario> listaSabado) {
	this.listaSabado = listaSabado;
}




public List<RegistroHorario> getListaDomingo() {
	return listaDomingo;
}




public void setListaDomingo(List<RegistroHorario> listaDomingo) {
	this.listaDomingo = listaDomingo;
}



public Aula getMagna() {
	return Magna;
}




public void setMagna(Aula magna) {
	Magna = magna;
}




public List<RegistroHorario> getHorarioCruce() {
	return horarioCruce;
}




public void setHorarioCruce(List<RegistroHorario> horarioCruce) {
	this.horarioCruce = horarioCruce;
}




public ScheduleModel getEventModelMagna() {
	return eventModelMagna;
}




public void setEventModelMagna(ScheduleModel eventModelMagna) {
	this.eventModelMagna = eventModelMagna;
}




public ScheduleEvent getEventSelected() {
	return eventSelected;
}




public void setEventSelected(ScheduleEvent eventSelected) {
	this.eventSelected = eventSelected;
}




public Periodo getPeriodoActual() {
	return periodoActual;
}




public void setPeriodoActual(Periodo periodoActual) {
	this.periodoActual = periodoActual;
}




public Date getFechaInicioP() {
	return fechaInicioP;
}




public void setFechaInicioP(Date fechaInicioP) {
	this.fechaInicioP = fechaInicioP;
}




public Date getFechaFinP() {
	return fechaFinP;
}




public void setFechaFinP(Date fechaFinP) {
	this.fechaFinP = fechaFinP;
}




public Date getFechaAux() {
	return fechaAux;
}




public void setFechaAux(Date fechaAux) {
	this.fechaAux = fechaAux;
}




public User getUsuario() {
	return usuario;
}




public void setUsuario(User usuario) {
	this.usuario = usuario;
}




public List<Peticion> getMisPeticiones() {
	return misPeticiones;
}




public void setMisPeticiones(List<Peticion> misPeticiones) {
	this.misPeticiones = misPeticiones;
}




public RegistroHorario getDetalleClaseSelected() {
	return detalleClaseSelected;
}




public void setDetalleClaseSelected(RegistroHorario detalleClaseSelected) {
	this.detalleClaseSelected = detalleClaseSelected;
}




public Peticion getDetalleEventoSelected() {
	return detalleEventoSelected;
}




public void setDetalleEventoSelected(Peticion detalleEventoSelected) {
	this.detalleEventoSelected = detalleEventoSelected;
}




public boolean isDetalleEvento() {
	return detalleEvento;
}




public void setDetalleEvento(boolean detalleEvento) {
	this.detalleEvento = detalleEvento;
}




public boolean isDetalleClase() {
	return detalleClase;
}




public void setDetalleClase(boolean detalleClase) {
	this.detalleClase = detalleClase;
}




public DefaultScheduleEvent getEventNuevo() {
	return eventNuevo;
}




public void setEventNuevo(DefaultScheduleEvent eventNuevo) {
	this.eventNuevo = eventNuevo;
}




public List<Peticion> getPosibleCrucePet() {
	return posibleCrucePet;
}




public void setPosibleCrucePet(List<Peticion> posibleCrucePet) {
	this.posibleCrucePet = posibleCrucePet;
}




public boolean isExisteCrucePet() {
	return existeCrucePet;
}




public void setExisteCrucePet(boolean existeCrucePet) {
	this.existeCrucePet = existeCrucePet;
}




public boolean isExisteCruceClases() {
	return existeCruceClases;
}




public void setExisteCruceClases(boolean existeCruceClases) {
	this.existeCruceClases = existeCruceClases;
}




public boolean isExisteCruceEventos() {
	return existeCruceEventos;
}




public void setExisteCruceEventos(boolean existeCruceEventos) {
	this.existeCruceEventos = existeCruceEventos;
}

public void irlogin(){
	System.out.println("REDIRECCIONANDO.....");
	try {
		FacesContext
				.getCurrentInstance()
				.getExternalContext()
				.redirect(					
						"/sisdiam/common/loginSchedule.jsf");
	} catch (Exception e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
}
}
